package com.gt.quality.config.token;

import cn.dev33.satoken.stp.StpInterface;
import com.gt.quality.config.utils.LoginHelper;
import com.gt.quality.config.utils.LoginUser;
import com.gt.quality.config.utils.UserType;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName com.gt.quality.config.token
 * 拥有某个角色，那么就能通行
 *
 * @author makeJava
 * @version JDK 8
 */
@Slf4j
public class StpInterfaceImp implements StpInterface {

    public final String ERROR_MSG = "其他端 自行根据业务编写";

    /**
     * 菜单权限列表
     *
     * @param o 账号id
     * @param s 账号类型
     * @return List
     */
    @Override
    public List<String> getPermissionList(Object o, String s) {
        LoginUser loginUser = LoginHelper.getLoginUser();
        assert loginUser != null;
        UserType userType = UserType.getUserType(loginUser.getUserType());
        if (userType == UserType.SYS_USER) {
            return new ArrayList<>(loginUser.getMenuPermission());
        } else if (userType == UserType.APP_USER) {
            // 其他端 自行根据业务编写
            log.info(ERROR_MSG);
        }
        return new ArrayList<>();
    }

    /**
     * 获取角色权限列表
     *
     * @param o 账号id
     * @param s 账号类型
     * @return List
     */
    @Override
    public List<String> getRoleList(Object o, String s) {
        LoginUser loginUser = LoginHelper.getLoginUser();
        assert loginUser != null;
        UserType userType = UserType.getUserType(loginUser.getUserType());
        if (userType == UserType.SYS_USER) {
            return new ArrayList<>(loginUser.getRolePermission());
        } else if (userType == UserType.APP_USER) {
            // 其他端 自行根据业务编写
            log.info(ERROR_MSG);
        }
        return new ArrayList<>();
    }
}
